Nov 30 21:57:48.004 INFO testing vbo/nnrs against master#8940af3cea4a9a9deabcaf843b2f8cad9a83fc61 for beta-1.31-5
Nov 30 21:57:48.006 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.31-5/worker-5/master#8940af3cea4a9a9deabcaf843b2f8cad9a83fc61:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-5/beta-1.31-5/master#8940af3cea4a9a9deabcaf843b2f8cad9a83fc61:/source:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +8940af3cea4a9a9deabcaf843b2f8cad9a83fc61-alt build --frozen" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"`
Nov 30 21:57:48.560 INFO [stdout] 27b3a3e0728b96e5f6c6758717f1add8653fc1108434a98eb6f72e2f8e9ebe1e
Nov 30 21:57:48.563 INFO running `"docker" "start" "-a" "27b3a3e0728b96e5f6c6758717f1add8653fc1108434a98eb6f72e2f8e9ebe1e"`
Nov 30 21:57:50.483 INFO [stderr] usermod: no changes
Nov 30 21:57:50.623 INFO [stderr]    Compiling serde v1.0.43
Nov 30 21:57:50.624 INFO [stderr]    Compiling proc-macro2 v0.3.7
Nov 30 21:57:50.631 INFO [stderr]    Compiling clap v2.31.2
Nov 30 21:57:56.327 INFO [stderr]    Compiling quote v0.5.2
Nov 30 21:57:58.627 INFO [stderr]    Compiling syn v0.13.1
Nov 30 21:58:19.943 INFO [stderr]    Compiling serde_derive_internals v0.23.1
Nov 30 21:58:20.363 INFO [stderr]    Compiling serde_json v1.0.16
Nov 30 21:58:22.765 INFO [stderr]    Compiling serde_derive v1.0.43
Nov 30 21:58:29.979 INFO [stderr]    Compiling nnrs v0.1.0 (/source)
Nov 30 21:58:30.617 INFO [stderr] warning: unused import: `std::time`
Nov 30 21:58:30.617 INFO [stderr]  --> src/mnist.rs:2:5
Nov 30 21:58:30.617 INFO [stderr]   |
Nov 30 21:58:30.617 INFO [stderr] 2 | use std::time;
Nov 30 21:58:30.617 INFO [stderr]   |     ^^^^^^^^^
Nov 30 21:58:30.617 INFO [stderr]   |
Nov 30 21:58:30.617 INFO [stderr]   = note: #[warn(unused_imports)] on by default
Nov 30 21:58:30.617 INFO [stderr] 
Nov 30 21:58:30.617 INFO [stderr] warning: unused import: `math`
Nov 30 21:58:30.618 INFO [stderr]   --> src/mnist.rs:15:5
Nov 30 21:58:30.618 INFO [stderr]    |
Nov 30 21:58:30.618 INFO [stderr] 15 | use math;
Nov 30 21:58:30.618 INFO [stderr]    |     ^^^^
Nov 30 21:58:30.618 INFO [stderr] 
Nov 30 21:58:30.618 INFO [stderr] warning: unused import: `math::Matrix`
Nov 30 21:58:30.618 INFO [stderr]   --> src/mnist.rs:16:5
Nov 30 21:58:30.618 INFO [stderr]    |
Nov 30 21:58:30.618 INFO [stderr] 16 | use math::Matrix;
Nov 30 21:58:30.618 INFO [stderr]    |     ^^^^^^^^^^^^
Nov 30 21:58:30.618 INFO [stderr] 
Nov 30 21:58:30.618 INFO [stderr] warning: unused import: `timing`
Nov 30 21:58:30.618 INFO [stderr]   --> src/mnist.rs:19:5
Nov 30 21:58:30.618 INFO [stderr]    |
Nov 30 21:58:30.618 INFO [stderr] 19 | use timing;
Nov 30 21:58:30.618 INFO [stderr]    |     ^^^^^^
Nov 30 21:58:30.618 INFO [stderr] 
Nov 30 21:58:30.618 INFO [stderr] warning: unused import: `std::mem`
Nov 30 21:58:30.618 INFO [stderr]  --> src/network.rs:4:5
Nov 30 21:58:30.618 INFO [stderr]   |
Nov 30 21:58:30.618 INFO [stderr] 4 | use std::mem;
Nov 30 21:58:30.618 INFO [stderr]   |     ^^^^^^^^
Nov 30 21:58:30.618 INFO [stderr] 
Nov 30 21:58:30.619 INFO [stderr] warning: unused import: `timing::Timing`
Nov 30 21:58:30.619 INFO [stderr]  --> src/parallel_trainer.rs:9:5
Nov 30 21:58:30.619 INFO [stderr]   |
Nov 30 21:58:30.619 INFO [stderr] 9 | use timing::Timing;
Nov 30 21:58:30.619 INFO [stderr]   |     ^^^^^^^^^^^^^^
Nov 30 21:58:30.619 INFO [stderr] 
Nov 30 21:58:30.621 INFO [stderr] warning: unused import: `serde_json`
Nov 30 21:58:30.621 INFO [stderr]  --> src/snake.rs:6:5
Nov 30 21:58:30.621 INFO [stderr]   |
Nov 30 21:58:30.621 INFO [stderr] 6 | use serde_json;
Nov 30 21:58:30.621 INFO [stderr]   |     ^^^^^^^^^^
Nov 30 21:58:30.621 INFO [stderr] 
Nov 30 21:58:30.621 INFO [stderr] warning: unused import: `Network`
Nov 30 21:58:30.621 INFO [stderr]  --> src/snake_nn.rs:4:15
Nov 30 21:58:30.621 INFO [stderr]   |
Nov 30 21:58:30.621 INFO [stderr] 4 | use network::{Network, NetworkParameters, NetworkPredictor};
Nov 30 21:58:30.621 INFO [stderr]   |               ^^^^^^^
Nov 30 21:58:30.621 INFO [stderr] 
Nov 30 21:58:30.621 INFO [stderr] warning: unused imports: `IndependentSample`, `Range`
Nov 30 21:58:30.621 INFO [stderr]  --> src/snake_nn.rs:7:27
Nov 30 21:58:30.621 INFO [stderr]   |
Nov 30 21:58:30.621 INFO [stderr] 7 | use rand::distributions::{IndependentSample, Range};
Nov 30 21:58:30.621 INFO [stderr]   |                           ^^^^^^^^^^^^^^^^^  ^^^^^
Nov 30 21:58:30.621 INFO [stderr] 
Nov 30 21:58:30.621 INFO [stderr] warning: unused import: `std::sync::mpsc`
Nov 30 21:58:30.621 INFO [stderr]   --> src/snake_nn.rs:18:5
Nov 30 21:58:30.621 INFO [stderr]    |
Nov 30 21:58:30.621 INFO [stderr] 18 | use std::sync::mpsc;
Nov 30 21:58:30.621 INFO [stderr]    |     ^^^^^^^^^^^^^^^
Nov 30 21:58:30.621 INFO [stderr] 
Nov 30 21:58:30.621 INFO [stderr] warning: unused imports: `Receiver`, `Sender`
Nov 30 21:58:30.621 INFO [stderr]   --> src/snake_nn.rs:19:23
Nov 30 21:58:30.621 INFO [stderr]    |
Nov 30 21:58:30.622 INFO [stderr] 19 | use std::sync::mpsc::{Receiver, Sender};
Nov 30 21:58:30.622 INFO [stderr]    |                       ^^^^^^^^  ^^^^^^
Nov 30 21:58:30.622 INFO [stderr] 
Nov 30 21:58:30.622 INFO [stderr] warning: unused import: `timing::duration_as_total_nanos`
Nov 30 21:58:30.622 INFO [stderr]   --> src/snake_nn.rs:22:5
Nov 30 21:58:30.622 INFO [stderr]    |
Nov 30 21:58:30.622 INFO [stderr] 22 | use timing::duration_as_total_nanos;
Nov 30 21:58:30.622 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:30.622 INFO [stderr] 
Nov 30 21:58:30.622 INFO [stderr] warning: unnecessary parentheses around `if` condition
Nov 30 21:58:30.623 INFO [stderr]    --> src/snake_nn.rs:340:8
Nov 30 21:58:30.623 INFO [stderr]     |
Nov 30 21:58:30.623 INFO [stderr] 340 |     if (rng.gen_range(0.0, 1.0) <= random_move_prob) {
Nov 30 21:58:30.623 INFO [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
Nov 30 21:58:30.623 INFO [stderr]     |
Nov 30 21:58:30.623 INFO [stderr]     = note: #[warn(unused_parens)] on by default
Nov 30 21:58:30.623 INFO [stderr] 
Nov 30 21:58:30.623 INFO [stderr] warning: unused import: `std::collections::hash_map::Entry`
Nov 30 21:58:30.623 INFO [stderr]  --> src/timing.rs:2:5
Nov 30 21:58:30.623 INFO [stderr]   |
Nov 30 21:58:30.623 INFO [stderr] 2 | use std::collections::hash_map::Entry;
Nov 30 21:58:30.623 INFO [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:30.623 INFO [stderr] 
Nov 30 21:58:30.674 INFO [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep`
Nov 30 21:58:30.674 INFO [stderr]    --> src/snake_nn.rs:176:13
Nov 30 21:58:30.674 INFO [stderr]     |
Nov 30 21:58:30.674 INFO [stderr] 176 |             thread::sleep_ms(SLEEP_INTERVAL_MS);
Nov 30 21:58:30.674 INFO [stderr]     |             ^^^^^^^^^^^^^^^^
Nov 30 21:58:30.674 INFO [stderr]     |
Nov 30 21:58:30.674 INFO [stderr]     = note: #[warn(deprecated)] on by default
Nov 30 21:58:30.674 INFO [stderr] 
Nov 30 21:58:30.674 INFO [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep`
Nov 30 21:58:30.674 INFO [stderr]    --> src/snake_nn.rs:212:17
Nov 30 21:58:30.674 INFO [stderr]     |
Nov 30 21:58:30.674 INFO [stderr] 212 |                 thread::sleep_ms(SLEEP_INTERVAL_MS);
Nov 30 21:58:30.674 INFO [stderr]     |                 ^^^^^^^^^^^^^^^^
Nov 30 21:58:30.675 INFO [stderr] 
Nov 30 21:58:31.291 INFO [stderr] warning: unused import: `rand::Rng`
Nov 30 21:58:31.291 INFO [stderr]  --> src/snake.rs:1:5
Nov 30 21:58:31.291 INFO [stderr]   |
Nov 30 21:58:31.291 INFO [stderr] 1 | use rand::Rng;
Nov 30 21:58:31.291 INFO [stderr]   |     ^^^^^^^^^
Nov 30 21:58:31.291 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `hits`
Nov 30 21:58:31.367 INFO [stderr]   --> src/mnist.rs:64:13
Nov 30 21:58:31.367 INFO [stderr]    |
Nov 30 21:58:31.367 INFO [stderr] 64 |     let mut hits = 0usize;
Nov 30 21:58:31.367 INFO [stderr]    |             ^^^^ help: consider using `_hits` instead
Nov 30 21:58:31.367 INFO [stderr]    |
Nov 30 21:58:31.367 INFO [stderr]    = note: #[warn(unused_variables)] on by default
Nov 30 21:58:31.367 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `predictor`
Nov 30 21:58:31.367 INFO [stderr]   --> src/mnist.rs:98:30
Nov 30 21:58:31.367 INFO [stderr]    |
Nov 30 21:58:31.367 INFO [stderr] 98 |                 let (params, predictor, _) = parallel_trainer.borrow_network_parts();
Nov 30 21:58:31.367 INFO [stderr]    |                              ^^^^^^^^^ help: consider using `_predictor` instead
Nov 30 21:58:31.367 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `log_every_n`
Nov 30 21:58:31.367 INFO [stderr]   --> src/mnist.rs:35:5
Nov 30 21:58:31.367 INFO [stderr]    |
Nov 30 21:58:31.367 INFO [stderr] 35 |     log_every_n: usize,
Nov 30 21:58:31.367 INFO [stderr]    |     ^^^^^^^^^^^ help: consider using `_log_every_n` instead
Nov 30 21:58:31.367 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `outputs`
Nov 30 21:58:31.367 INFO [stderr]    --> src/parallel_trainer.rs:150:21
Nov 30 21:58:31.367 INFO [stderr]     |
Nov 30 21:58:31.367 INFO [stderr] 150 |                 let outputs = local_nn_predictor
Nov 30 21:58:31.367 INFO [stderr]     |                     ^^^^^^^ help: consider using `_outputs` instead
Nov 30 21:58:31.367 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `iters`
Nov 30 21:58:31.367 INFO [stderr]    --> src/snake.rs:168:21
Nov 30 21:58:31.367 INFO [stderr]     |
Nov 30 21:58:31.367 INFO [stderr] 168 |             let mut iters = 0;
Nov 30 21:58:31.367 INFO [stderr]     |                     ^^^^^ help: consider using `_iters` instead
Nov 30 21:58:31.367 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `epoch_no`
Nov 30 21:58:31.367 INFO [stderr]   --> src/snake_nn.rs:73:9
Nov 30 21:58:31.367 INFO [stderr]    |
Nov 30 21:58:31.367 INFO [stderr] 73 |     for epoch_no in 0..num_epochs {
Nov 30 21:58:31.367 INFO [stderr]    |         ^^^^^^^^ help: consider using `_epoch_no` instead
Nov 30 21:58:31.367 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `predictor`
Nov 30 21:58:31.367 INFO [stderr]   --> src/snake_nn.rs:90:30
Nov 30 21:58:31.367 INFO [stderr]    |
Nov 30 21:58:31.367 INFO [stderr] 90 |                 let (params, predictor, _) = parallel_trainer.borrow_network_parts();
Nov 30 21:58:31.367 INFO [stderr]    |                              ^^^^^^^^^ help: consider using `_predictor` instead
Nov 30 21:58:31.367 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `predictor`
Nov 30 21:58:31.367 INFO [stderr]    --> src/snake_nn.rs:109:18
Nov 30 21:58:31.367 INFO [stderr]     |
Nov 30 21:58:31.367 INFO [stderr] 109 |     let (params, predictor, _) = parallel_trainer.borrow_network_parts();
Nov 30 21:58:31.367 INFO [stderr]     |                  ^^^^^^^^^ help: consider using `_predictor` instead
Nov 30 21:58:31.367 INFO [stderr] 
Nov 30 21:58:31.367 INFO [stderr] warning: unused variable: `max_gain`
Nov 30 21:58:31.367 INFO [stderr]    --> src/snake_nn.rs:357:13
Nov 30 21:58:31.367 INFO [stderr]     |
Nov 30 21:58:31.367 INFO [stderr] 357 |     let (i, max_gain) = get_max_with_pos(snake_inputs_gains.as_slice());
Nov 30 21:58:31.368 INFO [stderr]     |             ^^^^^^^^ help: consider using `_max_gain` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.368 INFO [stderr] warning: unused variable: `is_next_action_optimal`
Nov 30 21:58:31.368 INFO [stderr]    --> src/snake_nn.rs:503:13
Nov 30 21:58:31.368 INFO [stderr]     |
Nov 30 21:58:31.368 INFO [stderr] 503 |         let is_next_action_optimal = session[i - 1].is_optimal;
Nov 30 21:58:31.368 INFO [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `_is_next_action_optimal` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.368 INFO [stderr] warning: unused variable: `i`
Nov 30 21:58:31.368 INFO [stderr]    --> src/snake_nn.rs:530:9
Nov 30 21:58:31.368 INFO [stderr]     |
Nov 30 21:58:31.368 INFO [stderr] 530 |     for i in 0..MAP_WIDTH * MAP_HEIGHT - 1 {
Nov 30 21:58:31.368 INFO [stderr]     |         ^ help: consider using `_i` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.368 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:31.368 INFO [stderr]   --> src/main.rs:53:24
Nov 30 21:58:31.368 INFO [stderr]    |
Nov 30 21:58:31.368 INFO [stderr] 53 | fn execute_mnist_train(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:31.368 INFO [stderr]    |                        ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.368 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:31.368 INFO [stderr]   --> src/main.rs:68:22
Nov 30 21:58:31.368 INFO [stderr]    |
Nov 30 21:58:31.368 INFO [stderr] 68 | fn execute_snake_new(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:31.368 INFO [stderr]    |                      ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.368 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:31.368 INFO [stderr]   --> src/main.rs:73:24
Nov 30 21:58:31.368 INFO [stderr]    |
Nov 30 21:58:31.368 INFO [stderr] 73 | fn execute_snake_train(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:31.368 INFO [stderr]    |                        ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.368 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:31.368 INFO [stderr]   --> src/main.rs:93:22
Nov 30 21:58:31.368 INFO [stderr]    |
Nov 30 21:58:31.368 INFO [stderr] 93 | fn execute_snake_gen(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:31.368 INFO [stderr]    |                      ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.368 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:31.368 INFO [stderr]    --> src/main.rs:101:23
Nov 30 21:58:31.368 INFO [stderr]     |
Nov 30 21:58:31.368 INFO [stderr] 101 | fn execute_snake_demo(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:31.368 INFO [stderr]     |                       ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.368 INFO [stderr] warning: unused variable: `thread_no`
Nov 30 21:58:31.368 INFO [stderr]   --> src/parallel_trainer.rs:46:13
Nov 30 21:58:31.368 INFO [stderr]    |
Nov 30 21:58:31.368 INFO [stderr] 46 |         for thread_no in 0..num_threads {
Nov 30 21:58:31.368 INFO [stderr]    |             ^^^^^^^^^ help: consider using `_thread_no` instead
Nov 30 21:58:31.368 INFO [stderr] 
Nov 30 21:58:31.471 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.471 INFO [stderr]   --> src/mnist.rs:64:9
Nov 30 21:58:31.471 INFO [stderr]    |
Nov 30 21:58:31.471 INFO [stderr] 64 |     let mut hits = 0usize;
Nov 30 21:58:31.471 INFO [stderr]    |         ----^^^^
Nov 30 21:58:31.471 INFO [stderr]    |         |
Nov 30 21:58:31.471 INFO [stderr]    |         help: remove this `mut`
Nov 30 21:58:31.471 INFO [stderr]    |
Nov 30 21:58:31.471 INFO [stderr]    = note: #[warn(unused_mut)] on by default
Nov 30 21:58:31.471 INFO [stderr] 
Nov 30 21:58:31.488 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.488 INFO [stderr]   --> src/network.rs:55:13
Nov 30 21:58:31.488 INFO [stderr]    |
Nov 30 21:58:31.488 INFO [stderr] 55 |         let mut nn: Self = serde_json::from_reader(&file).unwrap();
Nov 30 21:58:31.489 INFO [stderr]    |             ----^^
Nov 30 21:58:31.489 INFO [stderr]    |             |
Nov 30 21:58:31.489 INFO [stderr]    |             help: remove this `mut`
Nov 30 21:58:31.489 INFO [stderr] 
Nov 30 21:58:31.557 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.557 INFO [stderr]   --> src/parallel_trainer.rs:37:51
Nov 30 21:58:31.557 INFO [stderr]    |
Nov 30 21:58:31.557 INFO [stderr] 37 |         let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts();
Nov 30 21:58:31.557 INFO [stderr]    |                                                   ----^^^^^^^^^^
Nov 30 21:58:31.557 INFO [stderr]    |                                                   |
Nov 30 21:58:31.557 INFO [stderr]    |                                                   help: remove this `mut`
Nov 30 21:58:31.557 INFO [stderr] 
Nov 30 21:58:31.557 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.557 INFO [stderr]   --> src/parallel_trainer.rs:37:33
Nov 30 21:58:31.558 INFO [stderr]    |
Nov 30 21:58:31.558 INFO [stderr] 37 |         let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts();
Nov 30 21:58:31.558 INFO [stderr]    |                                 ----^^^^^^^^^^^^
Nov 30 21:58:31.558 INFO [stderr]    |                                 |
Nov 30 21:58:31.558 INFO [stderr]    |                                 help: remove this `mut`
Nov 30 21:58:31.558 INFO [stderr] 
Nov 30 21:58:31.558 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.558 INFO [stderr]   --> src/parallel_trainer.rs:37:14
Nov 30 21:58:31.558 INFO [stderr]    |
Nov 30 21:58:31.558 INFO [stderr] 37 |         let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts();
Nov 30 21:58:31.558 INFO [stderr]    |              ----^^^^^^^^^^^^^
Nov 30 21:58:31.558 INFO [stderr]    |              |
Nov 30 21:58:31.558 INFO [stderr]    |              help: remove this `mut`
Nov 30 21:58:31.558 INFO [stderr] 
Nov 30 21:58:31.564 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.564 INFO [stderr]    --> src/parallel_trainer.rs:123:5
Nov 30 21:58:31.564 INFO [stderr]     |
Nov 30 21:58:31.564 INFO [stderr] 123 |     mut job_receiver: Arc<Mutex<Receiver<TrainingJob>>>,
Nov 30 21:58:31.564 INFO [stderr]     |     ----^^^^^^^^^^^^
Nov 30 21:58:31.564 INFO [stderr]     |     |
Nov 30 21:58:31.564 INFO [stderr]     |     help: remove this `mut`
Nov 30 21:58:31.564 INFO [stderr] 
Nov 30 21:58:31.564 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.564 INFO [stderr]    --> src/parallel_trainer.rs:124:5
Nov 30 21:58:31.564 INFO [stderr]     |
Nov 30 21:58:31.564 INFO [stderr] 124 |     mut output_sender: Sender<Arc<Mutex<NetworkTrainer>>>,
Nov 30 21:58:31.564 INFO [stderr]     |     ----^^^^^^^^^^^^^
Nov 30 21:58:31.564 INFO [stderr]     |     |
Nov 30 21:58:31.564 INFO [stderr]     |     help: remove this `mut`
Nov 30 21:58:31.564 INFO [stderr] 
Nov 30 21:58:31.564 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.565 INFO [stderr]    --> src/parallel_trainer.rs:126:5
Nov 30 21:58:31.565 INFO [stderr]     |
Nov 30 21:58:31.565 INFO [stderr] 126 |     mut local_nn_trainer: Arc<Mutex<NetworkTrainer>>,
Nov 30 21:58:31.565 INFO [stderr]     |     ----^^^^^^^^^^^^^^^^
Nov 30 21:58:31.565 INFO [stderr]     |     |
Nov 30 21:58:31.565 INFO [stderr]     |     help: remove this `mut`
Nov 30 21:58:31.565 INFO [stderr] 
Nov 30 21:58:31.621 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.621 INFO [stderr]   --> src/snake_nn.rs:57:9
Nov 30 21:58:31.621 INFO [stderr]    |
Nov 30 21:58:31.621 INFO [stderr] 57 |     let mut nn = network::Network::load_from_file(model_input_path);
Nov 30 21:58:31.621 INFO [stderr]    |         ----^^
Nov 30 21:58:31.621 INFO [stderr]    |         |
Nov 30 21:58:31.621 INFO [stderr]    |         help: remove this `mut`
Nov 30 21:58:31.621 INFO [stderr] 
Nov 30 21:58:31.628 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.628 INFO [stderr]    --> src/snake_nn.rs:131:21
Nov 30 21:58:31.628 INFO [stderr]     |
Nov 30 21:58:31.628 INFO [stderr] 131 |                 let mut state = GameState {
Nov 30 21:58:31.628 INFO [stderr]     |                     ----^^^^^
Nov 30 21:58:31.628 INFO [stderr]     |                     |
Nov 30 21:58:31.628 INFO [stderr]     |                     help: remove this `mut`
Nov 30 21:58:31.628 INFO [stderr] 
Nov 30 21:58:31.629 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:31.630 INFO [stderr]    --> src/snake_nn.rs:115:9
Nov 30 21:58:31.630 INFO [stderr]     |
Nov 30 21:58:31.630 INFO [stderr] 115 |     let mut nn = network::Network::load_from_file(model_path);
Nov 30 21:58:31.631 INFO [stderr]     |         ----^^
Nov 30 21:58:31.631 INFO [stderr]     |         |
Nov 30 21:58:31.631 INFO [stderr]     |         help: remove this `mut`
Nov 30 21:58:31.631 INFO [stderr] 
Nov 30 21:58:31.673 INFO [stderr] warning: method is never used: `new_same_dim`
Nov 30 21:58:31.675 INFO [stderr]   --> src/math.rs:21:5
Nov 30 21:58:31.675 INFO [stderr]    |
Nov 30 21:58:31.675 INFO [stderr] 21 |     pub fn new_same_dim(m: &Matrix) -> Self {
Nov 30 21:58:31.675 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.675 INFO [stderr]    |
Nov 30 21:58:31.675 INFO [stderr]    = note: #[warn(dead_code)] on by default
Nov 30 21:58:31.675 INFO [stderr] 
Nov 30 21:58:31.675 INFO [stderr] warning: method is never used: `from_slice`
Nov 30 21:58:31.675 INFO [stderr]   --> src/math.rs:27:5
Nov 30 21:58:31.675 INFO [stderr]    |
Nov 30 21:58:31.676 INFO [stderr] 27 |     pub fn from_slice(rows: usize, cols: usize, content: &[f64]) -> Self {
Nov 30 21:58:31.676 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.676 INFO [stderr] 
Nov 30 21:58:31.676 INFO [stderr] warning: method is never used: `dot_vec`
Nov 30 21:58:31.676 INFO [stderr]   --> src/math.rs:71:5
Nov 30 21:58:31.676 INFO [stderr]    |
Nov 30 21:58:31.676 INFO [stderr] 71 |     pub fn dot_vec(&self, vec: &Vector, res: &mut Vector) {
Nov 30 21:58:31.676 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.676 INFO [stderr] 
Nov 30 21:58:31.676 INFO [stderr] warning: method is never used: `transpose`
Nov 30 21:58:31.676 INFO [stderr]    --> src/math.rs:155:5
Nov 30 21:58:31.676 INFO [stderr]     |
Nov 30 21:58:31.677 INFO [stderr] 155 |     pub fn transpose(&self, res: &mut Matrix) {
Nov 30 21:58:31.677 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.677 INFO [stderr] 
Nov 30 21:58:31.677 INFO [stderr] warning: method is never used: `from_slice`
Nov 30 21:58:31.677 INFO [stderr]    --> src/math.rs:241:5
Nov 30 21:58:31.677 INFO [stderr]     |
Nov 30 21:58:31.677 INFO [stderr] 241 |     pub fn from_slice(content: &[f64]) -> Self {
Nov 30 21:58:31.677 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.677 INFO [stderr] 
Nov 30 21:58:31.677 INFO [stderr] warning: method is never used: `empty`
Nov 30 21:58:31.677 INFO [stderr]    --> src/math.rs:248:5
Nov 30 21:58:31.677 INFO [stderr]     |
Nov 30 21:58:31.677 INFO [stderr] 248 |     pub fn empty() -> Self {
Nov 30 21:58:31.677 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.677 INFO [stderr] 
Nov 30 21:58:31.677 INFO [stderr] warning: method is never used: `init_rand`
Nov 30 21:58:31.677 INFO [stderr]    --> src/math.rs:267:5
Nov 30 21:58:31.677 INFO [stderr]     |
Nov 30 21:58:31.677 INFO [stderr] 267 |     pub fn init_rand(mut self) -> Self {
Nov 30 21:58:31.677 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.677 INFO [stderr] 
Nov 30 21:58:31.677 INFO [stderr] warning: method is never used: `copy_from`
Nov 30 21:58:31.677 INFO [stderr]    --> src/math.rs:286:5
Nov 30 21:58:31.677 INFO [stderr]     |
Nov 30 21:58:31.677 INFO [stderr] 286 |     pub fn copy_from(&mut self, v: &Vector) {
Nov 30 21:58:31.677 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.677 INFO [stderr] 
Nov 30 21:58:31.677 INFO [stderr] warning: method is never used: `add`
Nov 30 21:58:31.677 INFO [stderr]    --> src/math.rs:322:5
Nov 30 21:58:31.677 INFO [stderr]     |
Nov 30 21:58:31.677 INFO [stderr] 322 |     pub fn add(&mut self, v: &Vector) {
Nov 30 21:58:31.677 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.677 INFO [stderr] 
Nov 30 21:58:31.677 INFO [stderr] warning: method is never used: `fill_rand`
Nov 30 21:58:31.677 INFO [stderr]    --> src/math.rs:335:5
Nov 30 21:58:31.677 INFO [stderr]     |
Nov 30 21:58:31.677 INFO [stderr] 335 |     pub fn fill_rand(&mut self) {
Nov 30 21:58:31.677 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.677 INFO [stderr] 
Nov 30 21:58:31.677 INFO [stderr] warning: constant item is never used: `NANOS_IN_SECOND`
Nov 30 21:58:31.677 INFO [stderr]   --> src/mnist.rs:28:1
Nov 30 21:58:31.677 INFO [stderr]    |
Nov 30 21:58:31.677 INFO [stderr] 28 | const NANOS_IN_SECOND: u64 = 1_000_000_000;
Nov 30 21:58:31.677 INFO [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.677 INFO [stderr] 
Nov 30 21:58:31.677 INFO [stderr] warning: method is never used: `get_layer_mut`
Nov 30 21:58:31.677 INFO [stderr]   --> src/network.rs:46:5
Nov 30 21:58:31.677 INFO [stderr]    |
Nov 30 21:58:31.678 INFO [stderr] 46 |     fn get_layer_mut(&mut self, id: LayerID) -> &mut Layer {
Nov 30 21:58:31.678 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: method is never used: `calc_layers_order`
Nov 30 21:58:31.678 INFO [stderr]    --> src/network.rs:462:5
Nov 30 21:58:31.678 INFO [stderr]     |
Nov 30 21:58:31.678 INFO [stderr] 462 |     fn calc_layers_order(&self) -> Vec<LayerID> {
Nov 30 21:58:31.678 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: method is never used: `predict`
Nov 30 21:58:31.678 INFO [stderr]    --> src/network.rs:466:5
Nov 30 21:58:31.678 INFO [stderr]     |
Nov 30 21:58:31.678 INFO [stderr] 466 |     pub fn predict(&mut self, input_data: &[f64]) -> &Vector {
Nov 30 21:58:31.678 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: method is never used: `backward_propagation`
Nov 30 21:58:31.678 INFO [stderr]    --> src/network.rs:470:5
Nov 30 21:58:31.678 INFO [stderr]     |
Nov 30 21:58:31.678 INFO [stderr] 470 |     pub fn backward_propagation(&mut self, true_outputs: &Vector) {
Nov 30 21:58:31.678 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: method is never used: `apply_batch`
Nov 30 21:58:31.678 INFO [stderr]    --> src/network.rs:530:5
Nov 30 21:58:31.678 INFO [stderr]     |
Nov 30 21:58:31.678 INFO [stderr] 530 |     pub fn apply_batch(&mut self) {
Nov 30 21:58:31.678 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: field is never used: `shared_training_data`
Nov 30 21:58:31.678 INFO [stderr]   --> src/parallel_trainer.rs:22:5
Nov 30 21:58:31.678 INFO [stderr]    |
Nov 30 21:58:31.678 INFO [stderr] 22 |     shared_training_data: Arc<D>,
Nov 30 21:58:31.678 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: field is never used: `job_receiver`
Nov 30 21:58:31.678 INFO [stderr]   --> src/parallel_trainer.rs:29:5
Nov 30 21:58:31.678 INFO [stderr]    |
Nov 30 21:58:31.678 INFO [stderr] 29 |     job_receiver: Arc<Mutex<Receiver<TrainingJob>>>,
Nov 30 21:58:31.678 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: field is never used: `output_sender`
Nov 30 21:58:31.678 INFO [stderr]   --> src/parallel_trainer.rs:30:5
Nov 30 21:58:31.678 INFO [stderr]    |
Nov 30 21:58:31.678 INFO [stderr] 30 |     output_sender: Sender<Arc<Mutex<NetworkTrainer>>>,
Nov 30 21:58:31.678 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: field is never used: `join_handles`
Nov 30 21:58:31.678 INFO [stderr]   --> src/parallel_trainer.rs:32:5
Nov 30 21:58:31.678 INFO [stderr]    |
Nov 30 21:58:31.678 INFO [stderr] 32 |     join_handles: Vec<JoinHandle<()>>,
Nov 30 21:58:31.678 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: function is never used: `teach_nn`
Nov 30 21:58:31.678 INFO [stderr]    --> src/snake_nn.rs:384:1
Nov 30 21:58:31.678 INFO [stderr]     |
Nov 30 21:58:31.678 INFO [stderr] 384 | / fn teach_nn(
Nov 30 21:58:31.678 INFO [stderr] 385 | |     nn: &mut network::Network,
Nov 30 21:58:31.678 INFO [stderr] 386 | |     state: &GameState,
Nov 30 21:58:31.678 INFO [stderr] 387 | |     snake_input: SnakeInput,
Nov 30 21:58:31.678 INFO [stderr] ...   |
Nov 30 21:58:31.678 INFO [stderr] 398 | |     nn.backward_propagation(&true_output_vec);
Nov 30 21:58:31.678 INFO [stderr] 399 | | }
Nov 30 21:58:31.678 INFO [stderr]     | |_^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.678 INFO [stderr] warning: method is never used: `elapsed`
Nov 30 21:58:31.678 INFO [stderr]   --> src/timing.rs:46:5
Nov 30 21:58:31.678 INFO [stderr]    |
Nov 30 21:58:31.678 INFO [stderr] 46 |     pub fn elapsed(&self, name: &str) -> time::Duration {
Nov 30 21:58:31.678 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.678 INFO [stderr] 
Nov 30 21:58:31.684 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.684 INFO [stderr]   --> src/parallel_trainer.rs:85:13
Nov 30 21:58:31.684 INFO [stderr]    |
Nov 30 21:58:31.684 INFO [stderr] 85 | /             self.job_sender.send(TrainingJob {
Nov 30 21:58:31.684 INFO [stderr] 86 | |                 examples_indices: chunk,
Nov 30 21:58:31.684 INFO [stderr] 87 | |                 network_parameters: self.shared_nn_parameters.clone(),
Nov 30 21:58:31.684 INFO [stderr] 88 | |             });
Nov 30 21:58:31.684 INFO [stderr]    | |_______________^
Nov 30 21:58:31.684 INFO [stderr]    |
Nov 30 21:58:31.684 INFO [stderr]    = note: #[warn(unused_must_use)] on by default
Nov 30 21:58:31.684 INFO [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.684 INFO [stderr] 
Nov 30 21:58:31.684 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.684 INFO [stderr]    --> src/parallel_trainer.rs:160:9
Nov 30 21:58:31.684 INFO [stderr]     |
Nov 30 21:58:31.684 INFO [stderr] 160 |         output_sender.send(local_nn_trainer.clone());
Nov 30 21:58:31.684 INFO [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.684 INFO [stderr]     |
Nov 30 21:58:31.684 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.684 INFO [stderr] 
Nov 30 21:58:31.687 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.687 INFO [stderr]    --> src/snake.rs:118:9
Nov 30 21:58:31.687 INFO [stderr]     |
Nov 30 21:58:31.687 INFO [stderr] 118 |         writer.write("\n".as_bytes());
Nov 30 21:58:31.687 INFO [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.687 INFO [stderr]     |
Nov 30 21:58:31.687 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.687 INFO [stderr] 
Nov 30 21:58:31.687 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.687 INFO [stderr]    --> src/snake.rs:120:5
Nov 30 21:58:31.687 INFO [stderr]     |
Nov 30 21:58:31.687 INFO [stderr] 120 |     writer.flush();
Nov 30 21:58:31.687 INFO [stderr]     |     ^^^^^^^^^^^^^^^
Nov 30 21:58:31.687 INFO [stderr]     |
Nov 30 21:58:31.688 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.688 INFO [stderr] 
Nov 30 21:58:31.688 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.688 INFO [stderr]    --> src/snake.rs:131:5
Nov 30 21:58:31.688 INFO [stderr]     |
Nov 30 21:58:31.688 INFO [stderr] 131 |     writer.write(character.as_bytes());
Nov 30 21:58:31.688 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.688 INFO [stderr]     |
Nov 30 21:58:31.688 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.688 INFO [stderr] 
Nov 30 21:58:31.694 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.694 INFO [stderr]    --> src/snake_nn.rs:140:21
Nov 30 21:58:31.694 INFO [stderr]     |
Nov 30 21:58:31.694 INFO [stderr] 140 |                     write!(training_data_file, "\n");
Nov 30 21:58:31.694 INFO [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.694 INFO [stderr]     |
Nov 30 21:58:31.694 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.694 INFO [stderr]     = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
Nov 30 21:58:31.694 INFO [stderr] 
Nov 30 21:58:31.694 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.694 INFO [stderr]    --> src/snake_nn.rs:150:9
Nov 30 21:58:31.694 INFO [stderr]     |
Nov 30 21:58:31.694 INFO [stderr] 150 |         jh.join();
Nov 30 21:58:31.694 INFO [stderr]     |         ^^^^^^^^^^
Nov 30 21:58:31.694 INFO [stderr]     |
Nov 30 21:58:31.694 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.694 INFO [stderr] 
Nov 30 21:58:31.694 INFO [stderr] warning: the `game_over:` in this pattern is redundant
Nov 30 21:58:31.694 INFO [stderr]    --> src/snake_nn.rs:203:17
Nov 30 21:58:31.694 INFO [stderr]     |
Nov 30 21:58:31.694 INFO [stderr] 203 |                 game_over: game_over,
Nov 30 21:58:31.694 INFO [stderr]     |                 ----------^^^^^^^^^^
Nov 30 21:58:31.694 INFO [stderr]     |                 |
Nov 30 21:58:31.694 INFO [stderr]     |                 help: remove this
Nov 30 21:58:31.694 INFO [stderr]     |
Nov 30 21:58:31.694 INFO [stderr]     = note: #[warn(non_shorthand_field_patterns)] on by default
Nov 30 21:58:31.694 INFO [stderr] 
Nov 30 21:58:31.694 INFO [stderr] warning: the `game_over:` in this pattern is redundant
Nov 30 21:58:31.694 INFO [stderr]    --> src/snake_nn.rs:271:13
Nov 30 21:58:31.694 INFO [stderr]     |
Nov 30 21:58:31.694 INFO [stderr] 271 |             game_over: game_over,
Nov 30 21:58:31.694 INFO [stderr]     |             ----------^^^^^^^^^^
Nov 30 21:58:31.694 INFO [stderr]     |             |
Nov 30 21:58:31.694 INFO [stderr]     |             help: remove this
Nov 30 21:58:31.694 INFO [stderr] 
Nov 30 21:58:31.694 INFO [stderr] warning: the `game_over:` in this pattern is redundant
Nov 30 21:58:31.694 INFO [stderr]    --> src/snake_nn.rs:308:17
Nov 30 21:58:31.694 INFO [stderr]     |
Nov 30 21:58:31.694 INFO [stderr] 308 |                 game_over: game_over,
Nov 30 21:58:31.694 INFO [stderr]     |                 ----------^^^^^^^^^^
Nov 30 21:58:31.694 INFO [stderr]     |                 |
Nov 30 21:58:31.694 INFO [stderr]     |                 help: remove this
Nov 30 21:58:31.694 INFO [stderr] 
Nov 30 21:58:31.694 INFO [stderr] warning: unused attribute
Nov 30 21:58:31.694 INFO [stderr]  --> src/snake_nn.rs:1:1
Nov 30 21:58:31.694 INFO [stderr]   |
Nov 30 21:58:31.694 INFO [stderr] 1 | #![feature(test)]
Nov 30 21:58:31.694 INFO [stderr]   | ^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.694 INFO [stderr]   |
Nov 30 21:58:31.694 INFO [stderr]   = note: #[warn(unused_attributes)] on by default
Nov 30 21:58:31.694 INFO [stderr] 
Nov 30 21:58:31.694 INFO [stderr] warning: crate-level attribute should be in the root module
Nov 30 21:58:31.694 INFO [stderr]  --> src/snake_nn.rs:1:1
Nov 30 21:58:31.694 INFO [stderr]   |
Nov 30 21:58:31.695 INFO [stderr] 1 | #![feature(test)]
Nov 30 21:58:31.695 INFO [stderr]   | ^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.695 INFO [stderr] 
Nov 30 21:58:31.695 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.695 INFO [stderr]   --> src/timing.rs:75:9
Nov 30 21:58:31.695 INFO [stderr]    |
Nov 30 21:58:31.695 INFO [stderr] 75 |         writeln!(f, "=== Timing ===");
Nov 30 21:58:31.695 INFO [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:31.695 INFO [stderr]    |
Nov 30 21:58:31.695 INFO [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.695 INFO [stderr]    = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
Nov 30 21:58:31.695 INFO [stderr] 
Nov 30 21:58:31.695 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:31.695 INFO [stderr]   --> src/timing.rs:77:13
Nov 30 21:58:31.695 INFO [stderr]    |
Nov 30 21:58:31.695 INFO [stderr] 77 | /             writeln!(
Nov 30 21:58:31.695 INFO [stderr] 78 | |                 f,
Nov 30 21:58:31.695 INFO [stderr] 79 | |                 "{}: {}.{:04}s",
Nov 30 21:58:31.695 INFO [stderr] 80 | |                 name,
Nov 30 21:58:31.695 INFO [stderr] 81 | |                 timer.duration.as_secs(),
Nov 30 21:58:31.695 INFO [stderr] 82 | |                 timer.duration.subsec_nanos() / 1000000
Nov 30 21:58:31.695 INFO [stderr] 83 | |             );
Nov 30 21:58:31.695 INFO [stderr]    | |______________^
Nov 30 21:58:31.695 INFO [stderr]    |
Nov 30 21:58:31.695 INFO [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:31.695 INFO [stderr]    = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
Nov 30 21:58:31.695 INFO [stderr] 
Nov 30 21:58:35.645 INFO [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 45.14s
Nov 30 21:58:35.651 INFO [stderr] su: No module specific data is present
Nov 30 21:58:36.176 INFO running `"docker" "inspect" "27b3a3e0728b96e5f6c6758717f1add8653fc1108434a98eb6f72e2f8e9ebe1e"`
Nov 30 21:58:36.525 INFO running `"docker" "rm" "-f" "27b3a3e0728b96e5f6c6758717f1add8653fc1108434a98eb6f72e2f8e9ebe1e"`
Nov 30 21:58:36.839 INFO [stdout] 27b3a3e0728b96e5f6c6758717f1add8653fc1108434a98eb6f72e2f8e9ebe1e
Nov 30 21:58:36.851 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.31-5/worker-5/master#8940af3cea4a9a9deabcaf843b2f8cad9a83fc61:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-5/beta-1.31-5/master#8940af3cea4a9a9deabcaf843b2f8cad9a83fc61:/source:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +8940af3cea4a9a9deabcaf843b2f8cad9a83fc61-alt test --frozen --no-run" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"`
Nov 30 21:58:37.214 INFO [stdout] b7db5829ea6a986a1ec00acf7b1183b27c01db891d6982ebe175dda05737b530
Nov 30 21:58:37.216 INFO running `"docker" "start" "-a" "b7db5829ea6a986a1ec00acf7b1183b27c01db891d6982ebe175dda05737b530"`
Nov 30 21:58:37.645 INFO [stderr] usermod: no changes
Nov 30 21:58:37.699 INFO [stderr]    Compiling nnrs v0.1.0 (/source)
Nov 30 21:58:38.284 INFO [stderr] warning: unused import: `std::time`
Nov 30 21:58:38.284 INFO [stderr]  --> src/mnist.rs:2:5
Nov 30 21:58:38.284 INFO [stderr]   |
Nov 30 21:58:38.284 INFO [stderr] 2 | use std::time;
Nov 30 21:58:38.284 INFO [stderr]   |     ^^^^^^^^^
Nov 30 21:58:38.284 INFO [stderr]   |
Nov 30 21:58:38.284 INFO [stderr]   = note: #[warn(unused_imports)] on by default
Nov 30 21:58:38.284 INFO [stderr] 
Nov 30 21:58:38.285 INFO [stderr] warning: unused import: `math`
Nov 30 21:58:38.285 INFO [stderr]   --> src/mnist.rs:15:5
Nov 30 21:58:38.285 INFO [stderr]    |
Nov 30 21:58:38.285 INFO [stderr] 15 | use math;
Nov 30 21:58:38.285 INFO [stderr]    |     ^^^^
Nov 30 21:58:38.285 INFO [stderr] 
Nov 30 21:58:38.285 INFO [stderr] warning: unused import: `math::Matrix`
Nov 30 21:58:38.285 INFO [stderr]   --> src/mnist.rs:16:5
Nov 30 21:58:38.285 INFO [stderr]    |
Nov 30 21:58:38.285 INFO [stderr] 16 | use math::Matrix;
Nov 30 21:58:38.285 INFO [stderr]    |     ^^^^^^^^^^^^
Nov 30 21:58:38.285 INFO [stderr] 
Nov 30 21:58:38.285 INFO [stderr] warning: unused import: `timing`
Nov 30 21:58:38.285 INFO [stderr]   --> src/mnist.rs:19:5
Nov 30 21:58:38.285 INFO [stderr]    |
Nov 30 21:58:38.285 INFO [stderr] 19 | use timing;
Nov 30 21:58:38.285 INFO [stderr]    |     ^^^^^^
Nov 30 21:58:38.285 INFO [stderr] 
Nov 30 21:58:38.285 INFO [stderr] warning: unused import: `std::mem`
Nov 30 21:58:38.285 INFO [stderr]  --> src/network.rs:4:5
Nov 30 21:58:38.285 INFO [stderr]   |
Nov 30 21:58:38.285 INFO [stderr] 4 | use std::mem;
Nov 30 21:58:38.285 INFO [stderr]   |     ^^^^^^^^
Nov 30 21:58:38.285 INFO [stderr] 
Nov 30 21:58:38.286 INFO [stderr] warning: unused import: `timing::Timing`
Nov 30 21:58:38.286 INFO [stderr]  --> src/parallel_trainer.rs:9:5
Nov 30 21:58:38.286 INFO [stderr]   |
Nov 30 21:58:38.286 INFO [stderr] 9 | use timing::Timing;
Nov 30 21:58:38.286 INFO [stderr]   |     ^^^^^^^^^^^^^^
Nov 30 21:58:38.286 INFO [stderr] 
Nov 30 21:58:38.286 INFO [stderr] warning: unused import: `serde_json`
Nov 30 21:58:38.286 INFO [stderr]  --> src/snake.rs:6:5
Nov 30 21:58:38.286 INFO [stderr]   |
Nov 30 21:58:38.286 INFO [stderr] 6 | use serde_json;
Nov 30 21:58:38.286 INFO [stderr]   |     ^^^^^^^^^^
Nov 30 21:58:38.286 INFO [stderr] 
Nov 30 21:58:38.288 INFO [stderr] warning: unused import: `Network`
Nov 30 21:58:38.288 INFO [stderr]  --> src/snake_nn.rs:4:15
Nov 30 21:58:38.288 INFO [stderr]   |
Nov 30 21:58:38.288 INFO [stderr] 4 | use network::{Network, NetworkParameters, NetworkPredictor};
Nov 30 21:58:38.288 INFO [stderr]   |               ^^^^^^^
Nov 30 21:58:38.288 INFO [stderr] 
Nov 30 21:58:38.288 INFO [stderr] warning: unused imports: `IndependentSample`, `Range`
Nov 30 21:58:38.288 INFO [stderr]  --> src/snake_nn.rs:7:27
Nov 30 21:58:38.288 INFO [stderr]   |
Nov 30 21:58:38.289 INFO [stderr] 7 | use rand::distributions::{IndependentSample, Range};
Nov 30 21:58:38.289 INFO [stderr]   |                           ^^^^^^^^^^^^^^^^^  ^^^^^
Nov 30 21:58:38.289 INFO [stderr] 
Nov 30 21:58:38.289 INFO [stderr] warning: unused import: `std::sync::mpsc`
Nov 30 21:58:38.289 INFO [stderr]   --> src/snake_nn.rs:18:5
Nov 30 21:58:38.289 INFO [stderr]    |
Nov 30 21:58:38.289 INFO [stderr] 18 | use std::sync::mpsc;
Nov 30 21:58:38.289 INFO [stderr]    |     ^^^^^^^^^^^^^^^
Nov 30 21:58:38.289 INFO [stderr] 
Nov 30 21:58:38.289 INFO [stderr] warning: unused imports: `Receiver`, `Sender`
Nov 30 21:58:38.289 INFO [stderr]   --> src/snake_nn.rs:19:23
Nov 30 21:58:38.289 INFO [stderr]    |
Nov 30 21:58:38.289 INFO [stderr] 19 | use std::sync::mpsc::{Receiver, Sender};
Nov 30 21:58:38.289 INFO [stderr]    |                       ^^^^^^^^  ^^^^^^
Nov 30 21:58:38.289 INFO [stderr] 
Nov 30 21:58:38.289 INFO [stderr] warning: unused import: `timing::duration_as_total_nanos`
Nov 30 21:58:38.289 INFO [stderr]   --> src/snake_nn.rs:22:5
Nov 30 21:58:38.289 INFO [stderr]    |
Nov 30 21:58:38.289 INFO [stderr] 22 | use timing::duration_as_total_nanos;
Nov 30 21:58:38.289 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:38.289 INFO [stderr] 
Nov 30 21:58:38.289 INFO [stderr] warning: unnecessary parentheses around `if` condition
Nov 30 21:58:38.289 INFO [stderr]    --> src/snake_nn.rs:340:8
Nov 30 21:58:38.289 INFO [stderr]     |
Nov 30 21:58:38.289 INFO [stderr] 340 |     if (rng.gen_range(0.0, 1.0) <= random_move_prob) {
Nov 30 21:58:38.289 INFO [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
Nov 30 21:58:38.289 INFO [stderr]     |
Nov 30 21:58:38.289 INFO [stderr]     = note: #[warn(unused_parens)] on by default
Nov 30 21:58:38.289 INFO [stderr] 
Nov 30 21:58:38.289 INFO [stderr] warning: unused import: `std::collections::hash_map::Entry`
Nov 30 21:58:38.289 INFO [stderr]  --> src/timing.rs:2:5
Nov 30 21:58:38.289 INFO [stderr]   |
Nov 30 21:58:38.289 INFO [stderr] 2 | use std::collections::hash_map::Entry;
Nov 30 21:58:38.289 INFO [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:38.289 INFO [stderr] 
Nov 30 21:58:38.333 INFO [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep`
Nov 30 21:58:38.333 INFO [stderr]    --> src/snake_nn.rs:176:13
Nov 30 21:58:38.333 INFO [stderr]     |
Nov 30 21:58:38.333 INFO [stderr] 176 |             thread::sleep_ms(SLEEP_INTERVAL_MS);
Nov 30 21:58:38.333 INFO [stderr]     |             ^^^^^^^^^^^^^^^^
Nov 30 21:58:38.333 INFO [stderr]     |
Nov 30 21:58:38.333 INFO [stderr]     = note: #[warn(deprecated)] on by default
Nov 30 21:58:38.333 INFO [stderr] 
Nov 30 21:58:38.334 INFO [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep`
Nov 30 21:58:38.334 INFO [stderr]    --> src/snake_nn.rs:212:17
Nov 30 21:58:38.334 INFO [stderr]     |
Nov 30 21:58:38.334 INFO [stderr] 212 |                 thread::sleep_ms(SLEEP_INTERVAL_MS);
Nov 30 21:58:38.334 INFO [stderr]     |                 ^^^^^^^^^^^^^^^^
Nov 30 21:58:38.334 INFO [stderr] 
Nov 30 21:58:38.983 INFO [stderr] warning: unused import: `rand::Rng`
Nov 30 21:58:38.983 INFO [stderr]  --> src/snake.rs:1:5
Nov 30 21:58:38.983 INFO [stderr]   |
Nov 30 21:58:38.983 INFO [stderr] 1 | use rand::Rng;
Nov 30 21:58:38.983 INFO [stderr]   |     ^^^^^^^^^
Nov 30 21:58:38.983 INFO [stderr] 
Nov 30 21:58:39.071 INFO [stderr] warning: unused variable: `hits`
Nov 30 21:58:39.071 INFO [stderr]   --> src/mnist.rs:64:13
Nov 30 21:58:39.071 INFO [stderr]    |
Nov 30 21:58:39.071 INFO [stderr] 64 |     let mut hits = 0usize;
Nov 30 21:58:39.071 INFO [stderr]    |             ^^^^ help: consider using `_hits` instead
Nov 30 21:58:39.071 INFO [stderr]    |
Nov 30 21:58:39.071 INFO [stderr]    = note: #[warn(unused_variables)] on by default
Nov 30 21:58:39.071 INFO [stderr] 
Nov 30 21:58:39.071 INFO [stderr] warning: unused variable: `predictor`
Nov 30 21:58:39.071 INFO [stderr]   --> src/mnist.rs:98:30
Nov 30 21:58:39.071 INFO [stderr]    |
Nov 30 21:58:39.071 INFO [stderr] 98 |                 let (params, predictor, _) = parallel_trainer.borrow_network_parts();
Nov 30 21:58:39.071 INFO [stderr]    |                              ^^^^^^^^^ help: consider using `_predictor` instead
Nov 30 21:58:39.071 INFO [stderr] 
Nov 30 21:58:39.071 INFO [stderr] warning: unused variable: `log_every_n`
Nov 30 21:58:39.071 INFO [stderr]   --> src/mnist.rs:35:5
Nov 30 21:58:39.071 INFO [stderr]    |
Nov 30 21:58:39.071 INFO [stderr] 35 |     log_every_n: usize,
Nov 30 21:58:39.071 INFO [stderr]    |     ^^^^^^^^^^^ help: consider using `_log_every_n` instead
Nov 30 21:58:39.071 INFO [stderr] 
Nov 30 21:58:39.071 INFO [stderr] warning: unused variable: `outputs`
Nov 30 21:58:39.071 INFO [stderr]    --> src/parallel_trainer.rs:150:21
Nov 30 21:58:39.071 INFO [stderr]     |
Nov 30 21:58:39.071 INFO [stderr] 150 |                 let outputs = local_nn_predictor
Nov 30 21:58:39.071 INFO [stderr]     |                     ^^^^^^^ help: consider using `_outputs` instead
Nov 30 21:58:39.071 INFO [stderr] 
Nov 30 21:58:39.071 INFO [stderr] warning: unused variable: `iters`
Nov 30 21:58:39.071 INFO [stderr]    --> src/snake.rs:168:21
Nov 30 21:58:39.071 INFO [stderr]     |
Nov 30 21:58:39.071 INFO [stderr] 168 |             let mut iters = 0;
Nov 30 21:58:39.071 INFO [stderr]     |                     ^^^^^ help: consider using `_iters` instead
Nov 30 21:58:39.071 INFO [stderr] 
Nov 30 21:58:39.071 INFO [stderr] warning: unused variable: `epoch_no`
Nov 30 21:58:39.072 INFO [stderr]   --> src/snake_nn.rs:73:9
Nov 30 21:58:39.072 INFO [stderr]    |
Nov 30 21:58:39.072 INFO [stderr] 73 |     for epoch_no in 0..num_epochs {
Nov 30 21:58:39.072 INFO [stderr]    |         ^^^^^^^^ help: consider using `_epoch_no` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `predictor`
Nov 30 21:58:39.072 INFO [stderr]   --> src/snake_nn.rs:90:30
Nov 30 21:58:39.072 INFO [stderr]    |
Nov 30 21:58:39.072 INFO [stderr] 90 |                 let (params, predictor, _) = parallel_trainer.borrow_network_parts();
Nov 30 21:58:39.072 INFO [stderr]    |                              ^^^^^^^^^ help: consider using `_predictor` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `predictor`
Nov 30 21:58:39.072 INFO [stderr]    --> src/snake_nn.rs:109:18
Nov 30 21:58:39.072 INFO [stderr]     |
Nov 30 21:58:39.072 INFO [stderr] 109 |     let (params, predictor, _) = parallel_trainer.borrow_network_parts();
Nov 30 21:58:39.072 INFO [stderr]     |                  ^^^^^^^^^ help: consider using `_predictor` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `max_gain`
Nov 30 21:58:39.072 INFO [stderr]    --> src/snake_nn.rs:357:13
Nov 30 21:58:39.072 INFO [stderr]     |
Nov 30 21:58:39.072 INFO [stderr] 357 |     let (i, max_gain) = get_max_with_pos(snake_inputs_gains.as_slice());
Nov 30 21:58:39.072 INFO [stderr]     |             ^^^^^^^^ help: consider using `_max_gain` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `is_next_action_optimal`
Nov 30 21:58:39.072 INFO [stderr]    --> src/snake_nn.rs:503:13
Nov 30 21:58:39.072 INFO [stderr]     |
Nov 30 21:58:39.072 INFO [stderr] 503 |         let is_next_action_optimal = session[i - 1].is_optimal;
Nov 30 21:58:39.072 INFO [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `_is_next_action_optimal` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `i`
Nov 30 21:58:39.072 INFO [stderr]    --> src/snake_nn.rs:530:9
Nov 30 21:58:39.072 INFO [stderr]     |
Nov 30 21:58:39.072 INFO [stderr] 530 |     for i in 0..MAP_WIDTH * MAP_HEIGHT - 1 {
Nov 30 21:58:39.072 INFO [stderr]     |         ^ help: consider using `_i` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:39.072 INFO [stderr]   --> src/main.rs:53:24
Nov 30 21:58:39.072 INFO [stderr]    |
Nov 30 21:58:39.072 INFO [stderr] 53 | fn execute_mnist_train(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:39.072 INFO [stderr]    |                        ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:39.072 INFO [stderr]   --> src/main.rs:68:22
Nov 30 21:58:39.072 INFO [stderr]    |
Nov 30 21:58:39.072 INFO [stderr] 68 | fn execute_snake_new(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:39.072 INFO [stderr]    |                      ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:39.072 INFO [stderr]   --> src/main.rs:73:24
Nov 30 21:58:39.072 INFO [stderr]    |
Nov 30 21:58:39.072 INFO [stderr] 73 | fn execute_snake_train(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:39.072 INFO [stderr]    |                        ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:39.072 INFO [stderr]   --> src/main.rs:93:22
Nov 30 21:58:39.072 INFO [stderr]    |
Nov 30 21:58:39.072 INFO [stderr] 93 | fn execute_snake_gen(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:39.072 INFO [stderr]    |                      ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `matches`
Nov 30 21:58:39.072 INFO [stderr]    --> src/main.rs:101:23
Nov 30 21:58:39.072 INFO [stderr]     |
Nov 30 21:58:39.072 INFO [stderr] 101 | fn execute_snake_demo(matches: &ArgMatches, submatches: &ArgMatches) {
Nov 30 21:58:39.072 INFO [stderr]     |                       ^^^^^^^ help: consider using `_matches` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `layer_order`
Nov 30 21:58:39.072 INFO [stderr]    --> src/network.rs:645:13
Nov 30 21:58:39.072 INFO [stderr]     |
Nov 30 21:58:39.072 INFO [stderr] 645 |         let layer_order = nn.calc_layers_order();
Nov 30 21:58:39.072 INFO [stderr]     |             ^^^^^^^^^^^ help: consider using `_layer_order` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.072 INFO [stderr] warning: unused variable: `thread_no`
Nov 30 21:58:39.072 INFO [stderr]   --> src/parallel_trainer.rs:46:13
Nov 30 21:58:39.072 INFO [stderr]    |
Nov 30 21:58:39.072 INFO [stderr] 46 |         for thread_no in 0..num_threads {
Nov 30 21:58:39.072 INFO [stderr]    |             ^^^^^^^^^ help: consider using `_thread_no` instead
Nov 30 21:58:39.072 INFO [stderr] 
Nov 30 21:58:39.170 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.170 INFO [stderr]   --> src/mnist.rs:64:9
Nov 30 21:58:39.170 INFO [stderr]    |
Nov 30 21:58:39.170 INFO [stderr] 64 |     let mut hits = 0usize;
Nov 30 21:58:39.170 INFO [stderr]    |         ----^^^^
Nov 30 21:58:39.170 INFO [stderr]    |         |
Nov 30 21:58:39.170 INFO [stderr]    |         help: remove this `mut`
Nov 30 21:58:39.170 INFO [stderr]    |
Nov 30 21:58:39.170 INFO [stderr]    = note: #[warn(unused_mut)] on by default
Nov 30 21:58:39.170 INFO [stderr] 
Nov 30 21:58:39.193 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.193 INFO [stderr]   --> src/network.rs:55:13
Nov 30 21:58:39.193 INFO [stderr]    |
Nov 30 21:58:39.193 INFO [stderr] 55 |         let mut nn: Self = serde_json::from_reader(&file).unwrap();
Nov 30 21:58:39.193 INFO [stderr]    |             ----^^
Nov 30 21:58:39.193 INFO [stderr]    |             |
Nov 30 21:58:39.193 INFO [stderr]    |             help: remove this `mut`
Nov 30 21:58:39.193 INFO [stderr] 
Nov 30 21:58:39.270 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.270 INFO [stderr]   --> src/parallel_trainer.rs:37:51
Nov 30 21:58:39.270 INFO [stderr]    |
Nov 30 21:58:39.270 INFO [stderr] 37 |         let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts();
Nov 30 21:58:39.270 INFO [stderr]    |                                                   ----^^^^^^^^^^
Nov 30 21:58:39.270 INFO [stderr]    |                                                   |
Nov 30 21:58:39.270 INFO [stderr]    |                                                   help: remove this `mut`
Nov 30 21:58:39.270 INFO [stderr] 
Nov 30 21:58:39.270 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.270 INFO [stderr]   --> src/parallel_trainer.rs:37:33
Nov 30 21:58:39.270 INFO [stderr]    |
Nov 30 21:58:39.270 INFO [stderr] 37 |         let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts();
Nov 30 21:58:39.270 INFO [stderr]    |                                 ----^^^^^^^^^^^^
Nov 30 21:58:39.270 INFO [stderr]    |                                 |
Nov 30 21:58:39.270 INFO [stderr]    |                                 help: remove this `mut`
Nov 30 21:58:39.270 INFO [stderr] 
Nov 30 21:58:39.270 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.270 INFO [stderr]   --> src/parallel_trainer.rs:37:14
Nov 30 21:58:39.270 INFO [stderr]    |
Nov 30 21:58:39.270 INFO [stderr] 37 |         let (mut nn_parameters, mut nn_predictor, mut nn_trainer) = network.as_parts();
Nov 30 21:58:39.270 INFO [stderr]    |              ----^^^^^^^^^^^^^
Nov 30 21:58:39.270 INFO [stderr]    |              |
Nov 30 21:58:39.271 INFO [stderr]    |              help: remove this `mut`
Nov 30 21:58:39.271 INFO [stderr] 
Nov 30 21:58:39.279 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.279 INFO [stderr]    --> src/parallel_trainer.rs:123:5
Nov 30 21:58:39.279 INFO [stderr]     |
Nov 30 21:58:39.279 INFO [stderr] 123 |     mut job_receiver: Arc<Mutex<Receiver<TrainingJob>>>,
Nov 30 21:58:39.279 INFO [stderr]     |     ----^^^^^^^^^^^^
Nov 30 21:58:39.279 INFO [stderr]     |     |
Nov 30 21:58:39.279 INFO [stderr]     |     help: remove this `mut`
Nov 30 21:58:39.279 INFO [stderr] 
Nov 30 21:58:39.279 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.279 INFO [stderr]    --> src/parallel_trainer.rs:124:5
Nov 30 21:58:39.279 INFO [stderr]     |
Nov 30 21:58:39.279 INFO [stderr] 124 |     mut output_sender: Sender<Arc<Mutex<NetworkTrainer>>>,
Nov 30 21:58:39.279 INFO [stderr]     |     ----^^^^^^^^^^^^^
Nov 30 21:58:39.279 INFO [stderr]     |     |
Nov 30 21:58:39.279 INFO [stderr]     |     help: remove this `mut`
Nov 30 21:58:39.279 INFO [stderr] 
Nov 30 21:58:39.279 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.279 INFO [stderr]    --> src/parallel_trainer.rs:126:5
Nov 30 21:58:39.279 INFO [stderr]     |
Nov 30 21:58:39.279 INFO [stderr] 126 |     mut local_nn_trainer: Arc<Mutex<NetworkTrainer>>,
Nov 30 21:58:39.279 INFO [stderr]     |     ----^^^^^^^^^^^^^^^^
Nov 30 21:58:39.279 INFO [stderr]     |     |
Nov 30 21:58:39.279 INFO [stderr]     |     help: remove this `mut`
Nov 30 21:58:39.279 INFO [stderr] 
Nov 30 21:58:39.338 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.338 INFO [stderr]   --> src/snake_nn.rs:57:9
Nov 30 21:58:39.338 INFO [stderr]    |
Nov 30 21:58:39.339 INFO [stderr] 57 |     let mut nn = network::Network::load_from_file(model_input_path);
Nov 30 21:58:39.339 INFO [stderr]    |         ----^^
Nov 30 21:58:39.339 INFO [stderr]    |         |
Nov 30 21:58:39.339 INFO [stderr]    |         help: remove this `mut`
Nov 30 21:58:39.339 INFO [stderr] 
Nov 30 21:58:39.344 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.344 INFO [stderr]    --> src/snake_nn.rs:131:21
Nov 30 21:58:39.344 INFO [stderr]     |
Nov 30 21:58:39.344 INFO [stderr] 131 |                 let mut state = GameState {
Nov 30 21:58:39.345 INFO [stderr]     |                     ----^^^^^
Nov 30 21:58:39.345 INFO [stderr]     |                     |
Nov 30 21:58:39.345 INFO [stderr]     |                     help: remove this `mut`
Nov 30 21:58:39.345 INFO [stderr] 
Nov 30 21:58:39.345 INFO [stderr] warning: variable does not need to be mutable
Nov 30 21:58:39.345 INFO [stderr]    --> src/snake_nn.rs:115:9
Nov 30 21:58:39.345 INFO [stderr]     |
Nov 30 21:58:39.345 INFO [stderr] 115 |     let mut nn = network::Network::load_from_file(model_path);
Nov 30 21:58:39.345 INFO [stderr]     |         ----^^
Nov 30 21:58:39.345 INFO [stderr]     |         |
Nov 30 21:58:39.345 INFO [stderr]     |         help: remove this `mut`
Nov 30 21:58:39.345 INFO [stderr] 
Nov 30 21:58:39.388 INFO [stderr] warning: method is never used: `new_same_dim`
Nov 30 21:58:39.388 INFO [stderr]   --> src/math.rs:21:5
Nov 30 21:58:39.388 INFO [stderr]    |
Nov 30 21:58:39.388 INFO [stderr] 21 |     pub fn new_same_dim(m: &Matrix) -> Self {
Nov 30 21:58:39.388 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.388 INFO [stderr]    |
Nov 30 21:58:39.388 INFO [stderr]    = note: #[warn(dead_code)] on by default
Nov 30 21:58:39.388 INFO [stderr] 
Nov 30 21:58:39.388 INFO [stderr] warning: method is never used: `dot_vec`
Nov 30 21:58:39.388 INFO [stderr]   --> src/math.rs:71:5
Nov 30 21:58:39.388 INFO [stderr]    |
Nov 30 21:58:39.388 INFO [stderr] 71 |     pub fn dot_vec(&self, vec: &Vector, res: &mut Vector) {
Nov 30 21:58:39.388 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.388 INFO [stderr] 
Nov 30 21:58:39.389 INFO [stderr] warning: method is never used: `empty`
Nov 30 21:58:39.389 INFO [stderr]    --> src/math.rs:248:5
Nov 30 21:58:39.389 INFO [stderr]     |
Nov 30 21:58:39.389 INFO [stderr] 248 |     pub fn empty() -> Self {
Nov 30 21:58:39.389 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.389 INFO [stderr] 
Nov 30 21:58:39.389 INFO [stderr] warning: method is never used: `init_rand`
Nov 30 21:58:39.389 INFO [stderr]    --> src/math.rs:267:5
Nov 30 21:58:39.389 INFO [stderr]     |
Nov 30 21:58:39.389 INFO [stderr] 267 |     pub fn init_rand(mut self) -> Self {
Nov 30 21:58:39.389 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.389 INFO [stderr] 
Nov 30 21:58:39.389 INFO [stderr] warning: method is never used: `copy_from`
Nov 30 21:58:39.389 INFO [stderr]    --> src/math.rs:286:5
Nov 30 21:58:39.389 INFO [stderr]     |
Nov 30 21:58:39.389 INFO [stderr] 286 |     pub fn copy_from(&mut self, v: &Vector) {
Nov 30 21:58:39.389 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.389 INFO [stderr] 
Nov 30 21:58:39.389 INFO [stderr] warning: method is never used: `add`
Nov 30 21:58:39.389 INFO [stderr]    --> src/math.rs:322:5
Nov 30 21:58:39.389 INFO [stderr]     |
Nov 30 21:58:39.389 INFO [stderr] 322 |     pub fn add(&mut self, v: &Vector) {
Nov 30 21:58:39.389 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.389 INFO [stderr] 
Nov 30 21:58:39.389 INFO [stderr] warning: method is never used: `fill_rand`
Nov 30 21:58:39.389 INFO [stderr]    --> src/math.rs:335:5
Nov 30 21:58:39.389 INFO [stderr]     |
Nov 30 21:58:39.389 INFO [stderr] 335 |     pub fn fill_rand(&mut self) {
Nov 30 21:58:39.389 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.389 INFO [stderr] 
Nov 30 21:58:39.389 INFO [stderr] warning: constant item is never used: `NANOS_IN_SECOND`
Nov 30 21:58:39.389 INFO [stderr]   --> src/mnist.rs:28:1
Nov 30 21:58:39.389 INFO [stderr]    |
Nov 30 21:58:39.389 INFO [stderr] 28 | const NANOS_IN_SECOND: u64 = 1_000_000_000;
Nov 30 21:58:39.389 INFO [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.389 INFO [stderr] 
Nov 30 21:58:39.389 INFO [stderr] warning: method is never used: `get_layer_mut`
Nov 30 21:58:39.389 INFO [stderr]   --> src/network.rs:46:5
Nov 30 21:58:39.389 INFO [stderr]    |
Nov 30 21:58:39.389 INFO [stderr] 46 |     fn get_layer_mut(&mut self, id: LayerID) -> &mut Layer {
Nov 30 21:58:39.389 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.389 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: method is never used: `predict`
Nov 30 21:58:39.390 INFO [stderr]    --> src/network.rs:466:5
Nov 30 21:58:39.390 INFO [stderr]     |
Nov 30 21:58:39.390 INFO [stderr] 466 |     pub fn predict(&mut self, input_data: &[f64]) -> &Vector {
Nov 30 21:58:39.390 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: method is never used: `backward_propagation`
Nov 30 21:58:39.390 INFO [stderr]    --> src/network.rs:470:5
Nov 30 21:58:39.390 INFO [stderr]     |
Nov 30 21:58:39.390 INFO [stderr] 470 |     pub fn backward_propagation(&mut self, true_outputs: &Vector) {
Nov 30 21:58:39.390 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: method is never used: `apply_batch`
Nov 30 21:58:39.390 INFO [stderr]    --> src/network.rs:530:5
Nov 30 21:58:39.390 INFO [stderr]     |
Nov 30 21:58:39.390 INFO [stderr] 530 |     pub fn apply_batch(&mut self) {
Nov 30 21:58:39.390 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: field is never used: `shared_training_data`
Nov 30 21:58:39.390 INFO [stderr]   --> src/parallel_trainer.rs:22:5
Nov 30 21:58:39.390 INFO [stderr]    |
Nov 30 21:58:39.390 INFO [stderr] 22 |     shared_training_data: Arc<D>,
Nov 30 21:58:39.390 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: field is never used: `job_receiver`
Nov 30 21:58:39.390 INFO [stderr]   --> src/parallel_trainer.rs:29:5
Nov 30 21:58:39.390 INFO [stderr]    |
Nov 30 21:58:39.390 INFO [stderr] 29 |     job_receiver: Arc<Mutex<Receiver<TrainingJob>>>,
Nov 30 21:58:39.390 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: field is never used: `output_sender`
Nov 30 21:58:39.390 INFO [stderr]   --> src/parallel_trainer.rs:30:5
Nov 30 21:58:39.390 INFO [stderr]    |
Nov 30 21:58:39.390 INFO [stderr] 30 |     output_sender: Sender<Arc<Mutex<NetworkTrainer>>>,
Nov 30 21:58:39.390 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: field is never used: `join_handles`
Nov 30 21:58:39.390 INFO [stderr]   --> src/parallel_trainer.rs:32:5
Nov 30 21:58:39.390 INFO [stderr]    |
Nov 30 21:58:39.390 INFO [stderr] 32 |     join_handles: Vec<JoinHandle<()>>,
Nov 30 21:58:39.390 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: function is never used: `teach_nn`
Nov 30 21:58:39.390 INFO [stderr]    --> src/snake_nn.rs:384:1
Nov 30 21:58:39.390 INFO [stderr]     |
Nov 30 21:58:39.390 INFO [stderr] 384 | / fn teach_nn(
Nov 30 21:58:39.390 INFO [stderr] 385 | |     nn: &mut network::Network,
Nov 30 21:58:39.390 INFO [stderr] 386 | |     state: &GameState,
Nov 30 21:58:39.390 INFO [stderr] 387 | |     snake_input: SnakeInput,
Nov 30 21:58:39.390 INFO [stderr] ...   |
Nov 30 21:58:39.390 INFO [stderr] 398 | |     nn.backward_propagation(&true_output_vec);
Nov 30 21:58:39.390 INFO [stderr] 399 | | }
Nov 30 21:58:39.390 INFO [stderr]     | |_^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.390 INFO [stderr] warning: method is never used: `elapsed`
Nov 30 21:58:39.390 INFO [stderr]   --> src/timing.rs:46:5
Nov 30 21:58:39.390 INFO [stderr]    |
Nov 30 21:58:39.390 INFO [stderr] 46 |     pub fn elapsed(&self, name: &str) -> time::Duration {
Nov 30 21:58:39.390 INFO [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.390 INFO [stderr] 
Nov 30 21:58:39.402 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.402 INFO [stderr]   --> src/parallel_trainer.rs:85:13
Nov 30 21:58:39.402 INFO [stderr]    |
Nov 30 21:58:39.402 INFO [stderr] 85 | /             self.job_sender.send(TrainingJob {
Nov 30 21:58:39.402 INFO [stderr] 86 | |                 examples_indices: chunk,
Nov 30 21:58:39.402 INFO [stderr] 87 | |                 network_parameters: self.shared_nn_parameters.clone(),
Nov 30 21:58:39.402 INFO [stderr] 88 | |             });
Nov 30 21:58:39.402 INFO [stderr]    | |_______________^
Nov 30 21:58:39.402 INFO [stderr]    |
Nov 30 21:58:39.402 INFO [stderr]    = note: #[warn(unused_must_use)] on by default
Nov 30 21:58:39.403 INFO [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.403 INFO [stderr] 
Nov 30 21:58:39.403 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.403 INFO [stderr]    --> src/parallel_trainer.rs:160:9
Nov 30 21:58:39.403 INFO [stderr]     |
Nov 30 21:58:39.403 INFO [stderr] 160 |         output_sender.send(local_nn_trainer.clone());
Nov 30 21:58:39.403 INFO [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.403 INFO [stderr]     |
Nov 30 21:58:39.403 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.403 INFO [stderr] 
Nov 30 21:58:39.404 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.404 INFO [stderr]    --> src/snake.rs:118:9
Nov 30 21:58:39.404 INFO [stderr]     |
Nov 30 21:58:39.404 INFO [stderr] 118 |         writer.write("\n".as_bytes());
Nov 30 21:58:39.404 INFO [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.404 INFO [stderr]     |
Nov 30 21:58:39.404 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.405 INFO [stderr] 
Nov 30 21:58:39.405 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.405 INFO [stderr]    --> src/snake.rs:120:5
Nov 30 21:58:39.405 INFO [stderr]     |
Nov 30 21:58:39.405 INFO [stderr] 120 |     writer.flush();
Nov 30 21:58:39.405 INFO [stderr]     |     ^^^^^^^^^^^^^^^
Nov 30 21:58:39.405 INFO [stderr]     |
Nov 30 21:58:39.405 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.405 INFO [stderr] 
Nov 30 21:58:39.405 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.405 INFO [stderr]    --> src/snake.rs:131:5
Nov 30 21:58:39.405 INFO [stderr]     |
Nov 30 21:58:39.405 INFO [stderr] 131 |     writer.write(character.as_bytes());
Nov 30 21:58:39.405 INFO [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.405 INFO [stderr]     |
Nov 30 21:58:39.405 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.405 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.409 INFO [stderr]    --> src/snake_nn.rs:140:21
Nov 30 21:58:39.409 INFO [stderr]     |
Nov 30 21:58:39.409 INFO [stderr] 140 |                     write!(training_data_file, "\n");
Nov 30 21:58:39.409 INFO [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.409 INFO [stderr]     |
Nov 30 21:58:39.409 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.409 INFO [stderr]     = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
Nov 30 21:58:39.409 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.409 INFO [stderr]    --> src/snake_nn.rs:150:9
Nov 30 21:58:39.409 INFO [stderr]     |
Nov 30 21:58:39.409 INFO [stderr] 150 |         jh.join();
Nov 30 21:58:39.409 INFO [stderr]     |         ^^^^^^^^^^
Nov 30 21:58:39.409 INFO [stderr]     |
Nov 30 21:58:39.409 INFO [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.409 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: the `game_over:` in this pattern is redundant
Nov 30 21:58:39.409 INFO [stderr]    --> src/snake_nn.rs:203:17
Nov 30 21:58:39.409 INFO [stderr]     |
Nov 30 21:58:39.409 INFO [stderr] 203 |                 game_over: game_over,
Nov 30 21:58:39.409 INFO [stderr]     |                 ----------^^^^^^^^^^
Nov 30 21:58:39.409 INFO [stderr]     |                 |
Nov 30 21:58:39.409 INFO [stderr]     |                 help: remove this
Nov 30 21:58:39.409 INFO [stderr]     |
Nov 30 21:58:39.409 INFO [stderr]     = note: #[warn(non_shorthand_field_patterns)] on by default
Nov 30 21:58:39.409 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: the `game_over:` in this pattern is redundant
Nov 30 21:58:39.409 INFO [stderr]    --> src/snake_nn.rs:271:13
Nov 30 21:58:39.409 INFO [stderr]     |
Nov 30 21:58:39.409 INFO [stderr] 271 |             game_over: game_over,
Nov 30 21:58:39.409 INFO [stderr]     |             ----------^^^^^^^^^^
Nov 30 21:58:39.409 INFO [stderr]     |             |
Nov 30 21:58:39.409 INFO [stderr]     |             help: remove this
Nov 30 21:58:39.409 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: the `game_over:` in this pattern is redundant
Nov 30 21:58:39.409 INFO [stderr]    --> src/snake_nn.rs:308:17
Nov 30 21:58:39.409 INFO [stderr]     |
Nov 30 21:58:39.409 INFO [stderr] 308 |                 game_over: game_over,
Nov 30 21:58:39.409 INFO [stderr]     |                 ----------^^^^^^^^^^
Nov 30 21:58:39.409 INFO [stderr]     |                 |
Nov 30 21:58:39.409 INFO [stderr]     |                 help: remove this
Nov 30 21:58:39.409 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: unused attribute
Nov 30 21:58:39.409 INFO [stderr]  --> src/snake_nn.rs:1:1
Nov 30 21:58:39.409 INFO [stderr]   |
Nov 30 21:58:39.409 INFO [stderr] 1 | #![feature(test)]
Nov 30 21:58:39.409 INFO [stderr]   | ^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.409 INFO [stderr]   |
Nov 30 21:58:39.409 INFO [stderr]   = note: #[warn(unused_attributes)] on by default
Nov 30 21:58:39.409 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: crate-level attribute should be in the root module
Nov 30 21:58:39.409 INFO [stderr]  --> src/snake_nn.rs:1:1
Nov 30 21:58:39.409 INFO [stderr]   |
Nov 30 21:58:39.409 INFO [stderr] 1 | #![feature(test)]
Nov 30 21:58:39.409 INFO [stderr]   | ^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.409 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.409 INFO [stderr]   --> src/timing.rs:75:9
Nov 30 21:58:39.409 INFO [stderr]    |
Nov 30 21:58:39.409 INFO [stderr] 75 |         writeln!(f, "=== Timing ===");
Nov 30 21:58:39.409 INFO [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Nov 30 21:58:39.409 INFO [stderr]    |
Nov 30 21:58:39.409 INFO [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.409 INFO [stderr]    = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
Nov 30 21:58:39.409 INFO [stderr] 
Nov 30 21:58:39.409 INFO [stderr] warning: unused `std::result::Result` that must be used
Nov 30 21:58:39.409 INFO [stderr]   --> src/timing.rs:77:13
Nov 30 21:58:39.409 INFO [stderr]    |
Nov 30 21:58:39.409 INFO [stderr] 77 | /             writeln!(
Nov 30 21:58:39.409 INFO [stderr] 78 | |                 f,
Nov 30 21:58:39.409 INFO [stderr] 79 | |                 "{}: {}.{:04}s",
Nov 30 21:58:39.409 INFO [stderr] 80 | |                 name,
Nov 30 21:58:39.409 INFO [stderr] 81 | |                 timer.duration.as_secs(),
Nov 30 21:58:39.409 INFO [stderr] 82 | |                 timer.duration.subsec_nanos() / 1000000
Nov 30 21:58:39.409 INFO [stderr] 83 | |             );
Nov 30 21:58:39.409 INFO [stderr]    | |______________^
Nov 30 21:58:39.410 INFO [stderr]    |
Nov 30 21:58:39.410 INFO [stderr]    = note: this `Result` may be an `Err` variant, which should be handled
Nov 30 21:58:39.410 INFO [stderr]    = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
Nov 30 21:58:39.410 INFO [stderr] 
Nov 30 21:58:40.676 INFO [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 3.01s
Nov 30 21:58:40.680 INFO [stderr] su: No module specific data is present
Nov 30 21:58:40.992 INFO running `"docker" "inspect" "b7db5829ea6a986a1ec00acf7b1183b27c01db891d6982ebe175dda05737b530"`
Nov 30 21:58:41.086 INFO running `"docker" "rm" "-f" "b7db5829ea6a986a1ec00acf7b1183b27c01db891d6982ebe175dda05737b530"`
Nov 30 21:58:41.187 INFO [stdout] b7db5829ea6a986a1ec00acf7b1183b27c01db891d6982ebe175dda05737b530
Nov 30 21:58:41.189 INFO running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/beta-1.31-5/worker-5/master#8940af3cea4a9a9deabcaf843b2f8cad9a83fc61:/target:rw,Z" "-v" "/mnt/big/crater/work/local/test-source/worker-5/beta-1.31-5/master#8940af3cea4a9a9deabcaf843b2f8cad9a83fc61:/source:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/source" "-e" "USER_ID=1000" "-e" "CMD=cargo +8940af3cea4a9a9deabcaf843b2f8cad9a83fc61-alt test --frozen" "-e" "CARGO_TARGET_DIR=/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/cargo-home" "-e" "RUSTUP_HOME=/rustup-home" "-m" "1536M" "--network" "none" "crater"`
Nov 30 21:58:41.390 INFO [stdout] 1a15385d263dbd189e023a91568134f9520b0ba331a15e7a69fb1dd3558a6875
Nov 30 21:58:41.392 INFO running `"docker" "start" "-a" "1a15385d263dbd189e023a91568134f9520b0ba331a15e7a69fb1dd3558a6875"`
Nov 30 21:58:41.779 INFO [stderr] usermod: no changes
Nov 30 21:58:41.844 INFO [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 0.05s
Nov 30 21:58:41.847 INFO [stderr]      Running /target/debug/deps/nnrs-b693c2d1da6b941d
Nov 30 21:58:41.851 INFO [stdout] 
Nov 30 21:58:41.851 INFO [stdout] running 6 tests
Nov 30 21:58:41.855 INFO [stdout] test math::tests::add_dot_vec ... ok
Nov 30 21:58:41.855 INFO [stdout] test math::tests::transpose ... ok
Nov 30 21:58:41.855 INFO [stdout] test math::tests::transpose_add_dot_vec ... ok
Nov 30 21:58:41.855 INFO [stdout] test network::tests::layer_order_forward ... ok
Nov 30 21:58:41.857 INFO [stdout] test network::tests::layer_order_skip ... ok
Nov 30 21:58:41.879 INFO [stdout] test network::tests::layer_order_cycle ... ok
Nov 30 21:58:41.879 INFO [stdout] 
Nov 30 21:58:41.879 INFO [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Nov 30 21:58:41.880 INFO [stdout] 
Nov 30 21:58:41.882 INFO [stderr] su: No module specific data is present
Nov 30 21:58:42.280 INFO running `"docker" "inspect" "1a15385d263dbd189e023a91568134f9520b0ba331a15e7a69fb1dd3558a6875"`
Nov 30 21:58:42.564 INFO running `"docker" "rm" "-f" "1a15385d263dbd189e023a91568134f9520b0ba331a15e7a69fb1dd3558a6875"`
Nov 30 21:58:42.886 INFO [stdout] 1a15385d263dbd189e023a91568134f9520b0ba331a15e7a69fb1dd3558a6875
